package com.lx.dao;

import com.lx.entity.User;
import com.lx.entity.vo.UserVo;

import java.sql.SQLException;
import java.util.List;

/**
 * @author c先生
 * @date 2022年05月05日 下午 3:58:18
 * @describe
 */

public interface UserDao {

    //注册用户
    Integer registerUser(User user) throws SQLException;

    //用户登录
    String loginUser(String name) throws SQLException;


    //根据手机号查询
    public Integer getByPhone(String userPhone) throws SQLException;

    //查询所有用户信息
    public List<UserVo> getAll() throws SQLException;

    /**
     * 根据用户名查询用户的所有信息
     *
     * @param userName 用户名
     * @return 一条用户信息
     * @throws SQLException sql查询异常
     */
    List<User> getUserInfoByName(String userName) throws SQLException;

    /**
     * 根据手机号查询是否存在该用户
     *
     * @param phoneNum 查询关键词手机号
     * @return 是否存在该用户
     * @throws SQLException sql查询异常
     * @author yuanchu
     */
    int getUserByPhoneNum(String phoneNum) throws SQLException;

    /**
     * 登录
     *
     * @param phoneNum 登录的手机号
     * @return 是否登录成功
     * @throws SQLException sql查询异常
     * @author yuanchu
     */
    User getUserByPhone(String phoneNum) throws SQLException;

    /**
     * 通过身份号码判断该用户是否存在
     *
     * @param idCard 查询条件 身份证号
     * @return 是否存在
     * @throws SQLException sql查询异常
     * @author yuanchu
     */
    int userCountByIdCard(String idCard) throws SQLException;

    /**
     * 为客户开户，主要使用后了User对象的userName、userPwd、userPhone、
     * userAddress、userBirthday、userGender、openAccount、idCard对象
     *
     * @param user user对象 填充了 userName、userPwd、userPhone、userAddress、userBirthday、userGender、openAccount、idCard
     * @return 是否成功开户
     * @throws SQLException sql查询异常
     * @author yuanchu
     */
    int addUser(User user) throws SQLException;
}
